package Guigu1.ExceptionTest;

/*
 * “抛”：程序在正常执行的过程中，一旦出现异常，就会在异常代码处生成一个对应异常类的对象。
 *              并将此对象抛出。
 *              一旦抛出对象以后，其后的代码就不在执行。
 *          
 *          关于异常对象的产生：① 系统自动生成的异常对象
 *                             ② 手动的生成一个异常对象，并抛出（throw）
 *                             
 *  如何自定义异常类？
 *  1.继承于现有的异常结构：RuntimeException、Exception
 *  2.提供全局常量：serialVersionUID
 *  3.提供重载的构造器                           
 */
public class ExceptionPaoChuTest {
	
	public static void main(String[] args) {
	
		Student s = new Student();
		try {
			s.regst(-1001);
			System.out.println(s);
		} catch (Exception e) {
			//e.printStackTrace();
			System.out.println(e.getMessage());
		}
	}
}

class Student
{
	int id;
	public void regst(int id) throws Exception
	{
		if(id>0)
		{
			this.id = id;
		}
		else
		{
			//System.out.println("您输入的数据非法");
			//手动抛出异常对象
			//throw new RuntimeException("您输入的数据非法");//运行时异常
			//throw new Exception("您输入的数据非法");//编译时异常
			throw new MyException("不能输入负数");
		}
	}
	@Override
	public String toString() {
		return "Student [id=" + id + "]";
	}
}